/*

第三题：封装一个函数，函数接收2个参数，参数为正整数，返回两个数之间的随机整数。如f(10,20)，返回10-20之间的整数。

第四题：封装一个函数，函数可以接收0-2个参数，如果接收一个参数，则返回0到这个参数之间一个随机整数，如果接收两个参数则

返回则两个参数之间的一个随机整数。


第五题：封装一个函数，函数可以接收0-3个参数，返回一个固定长度的随机数组。如f(len,start,end),len代表数组的长度，形参
len默认值为5可省略，start代表数组随机的最小值默认值为0，end代表随机数最大值默认值为100。
例如 f(),返回一个长度为5的数组，数组元素随机分布在0-100之间；
f(4),返回一个长度为4的数组，数组元素随机分布在0-100之间;
f(8,10),返回一个长度为8的数组，数组元素随机分布在10-100之间;
f(20,10,40),返回一个长度为20的数组，数组元素随机分布在10-40之间;

第六题：封装一个函数，输入一个数组，返回一个包含数组中的最大值和最小值得函数,如输入[2,4,6,9,3] 返回 [9,2]。

第七题：封装一个函数，接受两个参数，第一个参数全是数字的数组，第二个参数倍数，默认值为1。函数返回一个新数组，数组的所有值都乘以倍数。

第八题：封装一个函数，函数只接受一个对象参数。该对象为学生信息，包含姓名（name）,班级(className),数学分数（mathScore）,语文分数（chiScore）,英语分数（engScore）。
最终打印学生的成绩，文字模板为：XX班XX，语文：XX，数学：XX，英语：XX，总分：XX，平局分XX。
 */

//第三题：封装一个函数，函数接收2个参数，参数为正整数，返回两个数之间的随机整数。如f(10,20)，返回10-20之间的整数。

// function randomBetween(x, y) {
//     if (y >= x) {
//         var max = y, min = x
//     } else {
//         var max = x, min = y
//     }
//     var between = Math.round((max - min) * Math.random())
//     var betweenNum = between + min
//     return betweenNum
// }
function randomBetween(x, y) {
    var between = Math.floor((y - x + 1) * Math.random()) //0-1
    var betweenNum = between + x
    return betweenNum
}

/*
第四题：封装一个函数，函数可以接收0-2个参数，如果接收一个参数，则返回0到这个参数之间一个随机整数，
如果接收两个参数则返回则两个参数之间的一个随机整数。
*/

// function randomNum(x,y=0){
//     return randomBetween(x,y)
// }
function randomNum(x, y) {
    y = y == undefined ? 0 : y
    return randomBetween(x, y)
}
/*
第五题：封装一个函数，函数可以接收0-3个参数，返回一个固定长度的随机数组。如f(len,start,end),len代表数组的长度，形参
len默认值为5可省略，start代表数组随机的最小值默认值为0，end代表随机数最大值默认值为100。
例如 f(),返回一个长度为5的数组，数组元素随机分布在0-100之间；
f(4),返回一个长度为4的数组，数组元素随机分布在0-100之间;
f(8,10),返回一个长度为8的数组，数组元素随机分布在10-100之间;
f(20,10,40),返回一个长度为20的数组，数组元素随机分布在10-40之间;
*/
// function randomArray(len=5,start=0,end=100){
//     //定义一个空数组用来存放随机数字
//     var res = []
//     //循环len次
//     for(var i=1;i<=len;i++){
//          // 生成一个随机数
//         var num = randomBetween(start,end)
//          //  把随机数放到数组里面去
//         res.push(num)   
//     }
//     return res
// }
function randomArray() {
    // if (arguments.length == 0) {
    //     var len = 5
    //     var start = 0
    //     var end = 100
    // } else if (arguments.length == 1) {
    //     var len = arguments[0]
    //     var start = 0
    //     var end = 100
    // } else if (arguments.length == 2) {
    //     var len = arguments[0]
    //     var start = arguments[1]
    //     var end = 100
    // } else {
    //     var len = arguments[0]
    //     var start = arguments[1]
    //     var end = arguments[2]
    // }
    var len = arguments[0] == undefined ? 5 : arguments[0]
    var start = arguments[1] == undefined ? 0 : arguments[1]
    var end = arguments[2] == undefined ? 100 : arguments[2]
    var res = []
    for (var i = 1; i <= len; i++) {
        var num = randomBetween(start, end)
        res.push(num)
    }
    return res
}

//第六题：封装一个函数，输入一个数组，返回一个包含数组中的最大值和最小值得函数,如输入[2,4,6,9,3] 返回 [9,2]。
function maxAndMin(array) {
    var sortedArray = array.sort(function (a, b) { return a - b })
    // return [sortedArray[sortedArray.length-1],sortedArray[0]] 
    var min = sortedArray[0]
    var max = sortedArray[sortedArray.length - 1]
    return [max, min]
}
var array = [8, 2, 4, 6, 9, 3]

//冒泡排序法
function bubbleSort(array) {
    for (var i = 0; i < array.length - 1; i++) {
        for (var j = 0; j <= array.length - 1 - i; j++) {
            if (array[j] > array[j + 1]) {
                var mid = array[j + 1]
                array[j + 1] = array[j]
                array[j] = mid
            }
        }
    }
    return array
}

/*
第八题：封装一个函数，函数只接受一个对象参数。该对象为学生信息，包含姓名（name）,班级(className),数学分数（mathScore）,语文分数（chiScore）,英语分数（engScore）。
最终打印学生的成绩，文字模板为：XX班XX，语文：XX，数学：XX，英语：XX，总分：XX，平局分XX。
*/

var user = {
    name:'叶良辰',
    className:'高二三班',
    mathScore:120,
    chiScore:110,
    engScore:135
}

function showUserInfo(obj){
    var totalScore = (obj.mathScore + obj.chiScore + obj.engScore).toFixed(2)
    var aveScore = (totalScore / 3).toFixed(2)
    console.log(`${obj.className}${obj.name}，语文：${obj.chiScore}，数学：${obj.mathScore}，英语：${obj.engScore}，总分：${totalScore}，平均分${aveScore}。`)
}
showUserInfo(user)



